/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package csp;

import java.util.Random;

/**
 *
 * @author Leandro
 */
public class GeneradorProblemas {

    public ProblemaAntenas getP1() {
        return p1;
    }

    public void setP1(ProblemaAntenas p1) {
        this.p1 = p1;
    }

    public ProblemaAntenas getP2() {
        return p2;
    }

    public void setP2(ProblemaAntenas p2) {
        this.p2 = p2;
    }
    
    private ProblemaAntenas p1;
    private ProblemaAntenas p2;
    private ProblemaAntenas p3;
    private ProblemaAntenas p4;
    private ProblemaAntenas p5;
    private ProblemaAntenas p6;

    public ProblemaAntenas getP5() {
        return p5;
    }

    public void setP5(ProblemaAntenas p5) {
        this.p5 = p5;
    }

    public ProblemaAntenas getP6() {
        return p6;
    }

    public void setP6(ProblemaAntenas p6) {
        this.p6 = p6;
    }


    public ProblemaAntenas getP3() {
        return p3;
    }

    public void setP3(ProblemaAntenas p3) {
        this.p3 = p3;
    }

    public ProblemaAntenas getP4() {
        return p4;
    }

    public void setP4(ProblemaAntenas p4) {
        this.p4 = p4;
    }

    public void generarProblema(int cantAntenas
                                          ,int cantVariables
                                          ,int cantFrecuenciasDistintas
                                          ,double potenciaMax
                                          ,double fzMax){
        Random rand=new Random(System.currentTimeMillis());
        if(cantAntenas>cantVariables){
        cantAntenas=cantVariables;
        }
        double[] fzPosibles=new double[cantFrecuenciasDistintas];
        for(int i=0;i<cantFrecuenciasDistintas;i++){
            double aux=rand.nextInt((int)fzMax);
            if(aux==0.0){
            aux+=1.0;
            }
            fzPosibles[i]=(aux);
        }
        double[] fzAntenas=new double[cantAntenas];
        for(int i=0;i<cantAntenas;i++){
            fzAntenas[i]=fzPosibles[i%cantFrecuenciasDistintas];
        }

        double[] potAntenas=new double[cantAntenas];
        double sumaAux = 0.0 ;
        for(int i=0;i<cantAntenas;i++){
            do {
//                potAntenas[i] = (rand.nextInt()) % (potenciaMax - (potenciaMax * 0.10));
                double aux=rand.nextInt((int)(potenciaMax - (potenciaMax * 0.80))) ;
                if(aux==0){
                aux+=1.0;
                }
                 potAntenas[i] = aux;
                if (i > 0) {
                    sumaAux = potAntenas[i] + potAntenas[i - 1];
                } else {
                    sumaAux = potAntenas[i];
                }
                 if(sumaAux>potenciaMax)potAntenas[i]=1.0;
            } while (sumaAux > potenciaMax);
        }
        
        p1 = new ProblemaAntenas(fzAntenas, potAntenas, cantVariables, potenciaMax);
        p2 = new ProblemaAntenas(fzAntenas, potAntenas, cantVariables, potenciaMax);
        p3 = new ProblemaAntenas(fzAntenas, potAntenas, cantVariables, potenciaMax);
        p4 = new ProblemaAntenas(fzAntenas, potAntenas, cantVariables, potenciaMax);
        p5 = new ProblemaAntenas(fzAntenas, potAntenas, cantVariables, potenciaMax);
        p6 = new ProblemaAntenas(fzAntenas, potAntenas, cantVariables, potenciaMax);
    }

}
